Networks are commonly perceived as a group of computers communicating via wired and/or wireless means using a shared communication protocol. With the advancement in communication technologies, not only has the variety of devices connected to a network proliferated (e.g., smart phones, smart appliances, entertainment devices, televisions, monitoring systems, and comparable devices), but the types of network communications have also flourished. Today, there are numerous physical network communication media and associated interfaces such as Ethernet, 802.1a/b/g/n, 802.16, UWB, Bluetooth®, and many more will come in the future. Many computing devices, including those listed above, have a multitude of network interfaces to provide communications for different purposes (e.g., short range, long range, high throughput, secure, and similar modes).
Commonly, only a single communication interface is used at any time and each of these communication interfaces is visible to the end user and has to be configured individually. For some of these communication interfaces, several configurations and modes may be available. Once a computing device is configured for a particular network, the use of the network interfaces tends to be static, i.e. the same mode and network interface is used for various applications executed on the computing device regardless of other factors such as communication quality, throughput need, efficiency, and the like.
Moreover, most systems require some form of user intervention when network interfaces are to be set up or modified, which is not an easy task for a common user. Optimization of communications is a difficult process even for expert users as the  environmental conditions may change rapidly and not all parameters are necessarily exposed to users. Moreover, a typical user (e.g., a home network user) may not possess a deep understanding of the complex processes involved in communications between different computing devices and applications on those.